<!DOCTYPE doctype PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">

<HTML>
  <HEAD>
    <META name="generator" content=
    "HTML Tidy for Java (vers. 2009-12-01), see jtidy.sourceforge.net">

    <TITLE>Debugger: Model Service</TITLE>
    <META http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <LINK rel="stylesheet" type="text/css" href="help/shared/DefaultStyle.css">
  </HEAD>

  <BODY lang="EN-US">
    <H1><A name="plugin"></A>Debugger: Model Service</H1>

    <P><IMG alt="" src="help/shared/note.png">This service is the source of older "Recorder-based"
    targets. Recorders are being replaced with a system we call <EM>Trace RMI</EM>. The other
    topics in Help have been updated accordingly. See <A href=
    "help/topics/Debugger/GettingStarted.html">Getting Started</A>.</P>

    <P>This service plugin backs the <A href=
    "help/topics/DebuggerTargetsPlugin/DebuggerTargetsPlugin.html">Targets</A> window. It maintains
    all debugger connections across the entire Ghidra session, that is, they're shared across all
    tools.</P>

    <H2>Actions</H2>

    <P>The plugin also provides some shortcut actions.</P>

    <H3><A name="debug_program"></A> Debug Program</H3>

    <P>This group of actions is available whenever there exists a debug launcher that knows how to
    run the current program. Various launchers may all make offers to run the current program, each
    of which is presented as a item in this group. Not all offers are guaranteed to work. For
    example, an offer to launch the program remotely via SSH depends on the host's availability,
    the user's credentials, and the presence of the target binary on the host. The offers are
    ordered by most recent activation. The most recent offer used is the default launcher for the
    current program. Each launcher may check various conditions before making an offer. Most
    commonly, it will check that there is a suitable debugger for the current program's
    architecture (language) on the local system, that the program's original executable image still
    exists on disk, and that the user has permission to execute it. A launcher may take any
    arbitrary action to run the program. Most commonly, it starts a new connection suitable for the
    target, and then launches the program on that connection. If <A href=
    "help/topics/DebuggerObjectsPlugin/DebuggerObjectsPlugin.html#record_automatically">Record
    Automatically</A> is enabled, this will provide a single-click action to debug the current
    program. This is similar to the <A href=
    "help/topics/DebuggerObjectsPlugin/DebuggerObjectsPlugin.html#quick_launch">Quick Launch</A>
    action in the Commands and Objects window, except this one does not require an existing
    connection.</P>

    <P>The launch offers are presented in two places. First, they are listed as drop-down items
    from the "Debug Program" action in the main toolbar. When activated here, there are typically
    no further prompts. One notable exception is SSH, where authentication may be required. Second,
    they are listed under the <SPAN class="menu">Debugger &rarr; Debug Program</SPAN> menu. When
    activated here, the launcher should prompt for arguments. The chosen arguments are saved as the
    default for future launches of the current program.</P>

    <H3><A name="disconnect_all"></A> Disconnect All</H3>

    <P>This action is always available from the main application window. It closes all debugger
    connections, no matter what tool created them. This is a sort of panic and reset action. NOTE:
    A complete and total reset is not always possible. Some connectors may load native libraries
    into Ghidra's JVM. Unless that connector is careful to reset that library's state, subsequent
    connections could be affected.</P>
  </BODY>
</HTML>
